/**
 * @package Infinity-Seed
 *
 * @copyright Copyright (C) 2012-2013 Exia.CESI
 * @author Paul MAGNIN, Arthur MERCIER, Jordan RICHET, Cyril SCHUMACHER
 */
package infinity.seed;
import java.awt.EventQueue;

/**
 * Classe principale.
 * @author Cyril SCHUMACHER <cyril.schumacher at viacesi.fr>
 */
public final class InfinitySeed {
    /**
     * Récupère les configurations de l'application.
     */
    private static void configure() {
        // Récupère l'instance de la classe Configuration.
        infinity.seed.Configuration config = infinity.seed.Configuration.getInstance();
        
        // Définit les fichiers properties à utilisés.
        // Application.
        config.setConfigurationFile("/configuration/App.properties");
        // Base de données.
        config.setConfigurationFile("/configuration/Database.properties");
        // Couleurs.
        config.setConfigurationFile("/configuration/Color.properties");
        // Grille.
        config.setConfigurationFile("/configuration/Grid.properties");
        
        // Récupère le nom de langue.
        String language = config.exists("application.language") ? config.get("application.language") : "French";
        config.setConfigurationFile("/configuration/language/" + language + ".properties");
    }

    /**
     * Point d'entrée.
     * @param args Paramètres de ligne de commande.
     */
    public static void main(String[] args) {
        InfinitySeed.configure();
        
        // <editor-fold defaultstate="collapsed" desc="Affiche la premiere fenetre.">
        /**
         * Poste la fenetre dans l'EDT (EventDispatchThread) : execute la fenetre dans un Thread.
         * @see <a href="http://docs.oracle.com/javase/7/docs/api/java/awt/EventQueue.html">EventQueue</a>
         */
        EventQueue.invokeLater(new Runnable() {
            /**
             * When an object implementing interface Runnable is used to create a thread, starting the thread causes the object's run method to be called in that separately executing thread.
             * @see <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/Runnable.html">Runnable</a>
             */
            @Override
            public void run() {
                // Affiche la fenetre principale.
                view.MenuWindow menu = new view.MenuWindow();
            }
        });
        // </editor-fold>
    }
}
